package br.com.jukebox.view.gui;

import br.com.jukebox.general.ConstantesComum;
import br.com.jukebox.model.dao.ArquivoDAO;
import br.com.jukebox.uc.ArquivoUC;
import java.awt.Color;
import java.io.File;
import java.util.*;
import javax.swing.*;
import org.apache.commons.io.comparator.NameFileComparator;

/**
 *
 * @author Rafael Fernandes
 */
public class Principal extends javax.swing.JFrame {

    private Color [] arrayItemSelecionado = new Color[ConstantesComum.NUMERO_CDS_EXIBIDOS];
    
    private int posicaoPrimeiraImagem = 0;
    private int CDSelecionado = 0;
    private Integer contadorMusicasSelecionadas = 0;
    private Integer credito = 0;
    
    private List<JLabel> listaLBLs = new ArrayList<JLabel>();
    private List<JPanel> listaPNLs = new ArrayList<JPanel>();
    private Map<String,String> mapaMusicasSelecionadas = new HashMap<String, String>();
    private DefaultListModel modelMusicasSelecionadas = new DefaultListModel();
    File [] arrayFile;
    
    /**
     * Construtor da Classe Principal
     */
    public Principal() {
        initComponents();
        
        this.listaLBLs.add(this.lblImagemCDUm);
        this.listaLBLs.add(this.lblImagemCDDois);
        this.listaLBLs.add(this.lblImagemCDTres);
        this.listaLBLs.add(this.lblImagemCDQuatro);
        this.listaLBLs.add(this.lblImagemCDCinco);
        this.listaLBLs.add(this.lblImagemCDSeis);
        this.listaLBLs.add(this.lblImagemCDSete);
        this.listaLBLs.add(this.lblImagemCDOito);
        
        this.listaPNLs.add(this.pnlCDUm);
        this.listaPNLs.add(this.pnlCDDois);
        this.listaPNLs.add(this.pnlCDTres);
        this.listaPNLs.add(this.pnlCDQuatro);
        this.listaPNLs.add(this.pnlCDCinco);
        this.listaPNLs.add(this.pnlCDSeis);
        this.listaPNLs.add(this.pnlCDSete);
        this.listaPNLs.add(this.pnlCDOito);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        pnlCDUm = new javax.swing.JPanel();
        lblImagemCDUm = new javax.swing.JLabel();
        pnlCDDois = new javax.swing.JPanel();
        lblImagemCDDois = new javax.swing.JLabel();
        pnlCDTres = new javax.swing.JPanel();
        lblImagemCDTres = new javax.swing.JLabel();
        pnlCDQuatro = new javax.swing.JPanel();
        lblImagemCDQuatro = new javax.swing.JLabel();
        pnlCDSelecionado = new javax.swing.JPanel();
        lblCDSelecionado = new javax.swing.JLabel();
        pnlCDCinco = new javax.swing.JPanel();
        lblImagemCDCinco = new javax.swing.JLabel();
        lblCreditos = new javax.swing.JLabel();
        lblValorCreditos = new javax.swing.JLabel();
        pnlCDSeis = new javax.swing.JPanel();
        lblImagemCDSeis = new javax.swing.JLabel();
        pnlCDSete = new javax.swing.JPanel();
        lblImagemCDSete = new javax.swing.JLabel();
        pnlCDOito = new javax.swing.JPanel();
        lblImagemCDOito = new javax.swing.JLabel();
        lblNomeCD = new javax.swing.JLabel();
        scrlPnlLstMusicas = new javax.swing.JScrollPane();
        lstMusicas = new javax.swing.JList();
        scrlPnlLstMusicasSelecionadas = new javax.swing.JScrollPane();
        lstMusicasSelecionadas = new javax.swing.JList();
        lblMusicasSelecionadas = new javax.swing.JLabel();
        lblContadorMusicasSelecionadas = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        jPanel3 = new javax.swing.JPanel();
        jPanel4 = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("JukeBox Machine - by Dragonfly Informática");
        setName("framePrincipal"); // NOI18N
        setResizable(false);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowOpened(java.awt.event.WindowEvent evt) {
                formWindowOpened(evt);
            }
        });
        addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                formKeyPressed(evt);
            }
        });
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        pnlCDUm.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDUm.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDUm.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDUm.add(lblImagemCDUm, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDUm, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 160, 160));

        pnlCDDois.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDDois.setPreferredSize(new java.awt.Dimension(195, 150));
        pnlCDDois.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDDois.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDDois.add(lblImagemCDDois, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDDois, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 5, 160, 160));

        pnlCDTres.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDTres.setPreferredSize(new java.awt.Dimension(195, 150));
        pnlCDTres.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDTres.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDTres.add(lblImagemCDTres, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDTres, new org.netbeans.lib.awtextra.AbsoluteConstraints(335, 5, 160, 160));

        pnlCDQuatro.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDQuatro.setPreferredSize(new java.awt.Dimension(195, 150));
        pnlCDQuatro.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDQuatro.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDQuatro.add(lblImagemCDQuatro, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDQuatro, new org.netbeans.lib.awtextra.AbsoluteConstraints(500, 5, 160, 160));

        pnlCDSelecionado.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDSelecionado.setPreferredSize(new java.awt.Dimension(370, 280));
        pnlCDSelecionado.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblCDSelecionado.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDSelecionado.add(lblCDSelecionado, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 340, 315));

        getContentPane().add(pnlCDSelecionado, new org.netbeans.lib.awtextra.AbsoluteConstraints(667, 5, 350, 325));

        pnlCDCinco.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDCinco.setPreferredSize(new java.awt.Dimension(195, 150));
        pnlCDCinco.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDCinco.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDCinco.add(lblImagemCDCinco, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDCinco, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 170, 160, 160));

        lblCreditos.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
        lblCreditos.setText("CRÉDITOS:");
        getContentPane().add(lblCreditos, new org.netbeans.lib.awtextra.AbsoluteConstraints(685, 380, -1, -1));

        lblValorCreditos.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
        lblValorCreditos.setText("0");
        getContentPane().add(lblValorCreditos, new org.netbeans.lib.awtextra.AbsoluteConstraints(840, 380, -1, -1));

        pnlCDSeis.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDSeis.setPreferredSize(new java.awt.Dimension(195, 150));
        pnlCDSeis.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDSeis.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDSeis.add(lblImagemCDSeis, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDSeis, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 170, 160, 160));

        pnlCDSete.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDSete.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDSete.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDSete.add(lblImagemCDSete, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDSete, new org.netbeans.lib.awtextra.AbsoluteConstraints(335, 170, 160, 160));

        pnlCDOito.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        pnlCDOito.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        lblImagemCDOito.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        pnlCDOito.add(lblImagemCDOito, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 5, 150, 150));

        getContentPane().add(pnlCDOito, new org.netbeans.lib.awtextra.AbsoluteConstraints(500, 170, 160, 160));

        lblNomeCD.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
        lblNomeCD.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        lblNomeCD.setText("nomeCD");
        getContentPane().add(lblNomeCD, new org.netbeans.lib.awtextra.AbsoluteConstraints(59, 335, 960, 40));

        lstMusicas.setFont(new java.awt.Font("Tahoma", 0, 14)); // NOI18N
        lstMusicas.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                lstMusicasKeyPressed(evt);
            }
        });
        scrlPnlLstMusicas.setViewportView(lstMusicas);

        getContentPane().add(scrlPnlLstMusicas, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 380, 334, 380));

        scrlPnlLstMusicasSelecionadas.setViewportView(lstMusicasSelecionadas);

        getContentPane().add(scrlPnlLstMusicasSelecionadas, new org.netbeans.lib.awtextra.AbsoluteConstraints(685, 480, 334, 280));

        lblMusicasSelecionadas.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        lblMusicasSelecionadas.setText("Músicas Selecionadas:");
        getContentPane().add(lblMusicasSelecionadas, new org.netbeans.lib.awtextra.AbsoluteConstraints(685, 455, 150, -1));

        lblContadorMusicasSelecionadas.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        lblContadorMusicasSelecionadas.setText("0");
        getContentPane().add(lblContadorMusicasSelecionadas, new org.netbeans.lib.awtextra.AbsoluteConstraints(860, 455, -1, -1));

        jPanel1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(345, 380, 334, 315));

        jPanel2.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        getContentPane().add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(345, 700, 334, 60));

        jPanel3.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        getContentPane().add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(685, 410, 334, 30));

        jPanel4.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        getContentPane().add(jPanel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 335, 45, 40));

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        atribuiConfiguracaoInicialGUI();
        carregaCaminhos();
        carregaImagemCDs();
        carregaCD();
    }//GEN-LAST:event_formWindowOpened

    private void atribuiConfiguracaoInicialGUI(){
        pnlCDUm.setBackground(ConstantesComum.BORDA_COM_SELECAO);
        arrayItemSelecionado[0] = ConstantesComum.BORDA_COM_SELECAO;
        
        // tblListaMusicas.getColumnModel().getColumn(0).setPreferredWidth(250);
        // tblListaMusicas.getColumnModel().getColumn(1).setPreferredWidth(90);
         
    }
    
    /**
     * <p>Método responsável por modificar as cores de bordas de Painéis de
     * exibição de CDs na tela principal. Essa modificação de cores dá
     * impressão de movimentação do cursor de seleção de CDs.</p>
     * @param p_painelVelho painel que perderá a seleção
     * @param p_painelNovo painel que receberá nova seleção
     * @param indexVelho número do painel que perderá seleção
     * @param indexNovo número do painel que receberá nova seleção
     */
    public void selecionaCD(int novaSelecao){
        
        this.listaPNLs.get(novaSelecao).setBackground(ConstantesComum.BORDA_COM_SELECAO);
        this.listaPNLs.get(this.CDSelecionado).setBackground(ConstantesComum.BORDA_SEM_SELECAO);
        this.CDSelecionado = novaSelecao;
        carregaCD();
    }
    
    private void carregaCD(){
        if (this.posicaoPrimeiraImagem + this.CDSelecionado < arrayFile.length)
        {
            StringBuilder caminhoImagem = new StringBuilder();
            
            caminhoImagem.append(arrayFile[this.posicaoPrimeiraImagem+this.CDSelecionado].getAbsolutePath());
            carregaMusicas(caminhoImagem.toString());
            caminhoImagem.append("\\");
            caminhoImagem.append(ConstantesComum.CAPA_PEQUENA);
            caminhoImagem.append(".");
            
            for(int countK=0; countK<ConstantesComum.TIPOS_IMG.length;countK++)
            {
                if (new File(caminhoImagem.toString()+ConstantesComum.TIPOS_IMG[countK]).exists())
                {
                    String [] splitCaminhoImagem = caminhoImagem.toString().split("\\\\");
                    this.lblNomeCD.setText(splitCaminhoImagem[splitCaminhoImagem.length-2]);
                    
                    ImageIcon imageIcon = new ImageIcon(caminhoImagem.toString()+ConstantesComum.TIPOS_IMG[countK]);
                    imageIcon.setImage(imageIcon.getImage().getScaledInstance(this.lblCDSelecionado.getWidth(), this.lblCDSelecionado.getHeight(), 100));
                    lblCDSelecionado.setIcon(imageIcon);
                    break;
                }
            }
        }
    }
    
    /**
     * 
     */
    public void carregaMusicas(String caminho){
        File diretorio = new File(caminho);
        File [] arquivoArtista = diretorio.listFiles();
        DefaultListModel musicasListModel = new DefaultListModel();
        
        //AudioFileFormat formatoMusica = null;
        
        for (File itemFile : Arrays.asList(arquivoArtista)){
            if (itemFile.isFile()){
                for (int contadorI = 0; contadorI < ConstantesComum.TIPOS_MIDIA.length; contadorI++){
                    if (itemFile.getName().endsWith(ConstantesComum.TIPOS_MIDIA[contadorI])){
                        
                        /*
                        String duracaoMusica = "";
                        try {
                            formatoMusica = AudioSystem.getAudioFileFormat(itemFile);
                            duracaoMusica = (String) formatoMusica.properties().get("duration");
                        }catch (UnsupportedAudioFileException ex){
                            ex.printStackTrace();
                        }catch(Exception e){
                            e.printStackTrace();
                        } */
                        // + "\t\t - " + duracaoMusica
                        musicasListModel.addElement(itemFile.getName());
                    }
                }
            }
        }
        
        this.lstMusicas.setModel(musicasListModel);
    }
    
    
    /**
     * <p>Método responsável por mover seleção de CD à direita.</p>
     */
    public void deslocarSelecaoADireita(){
        if (this.posicaoPrimeiraImagem + this.CDSelecionado < arrayFile.length - 1){
            if (this.CDSelecionado >= ConstantesComum.NUMERO_CDS_EXIBIDOS - 1){
                this.posicaoPrimeiraImagem = this.posicaoPrimeiraImagem + ConstantesComum.NUMERO_CDS_EXIBIDOS;
                selecionaCD(0);
                carregaImagemCDs();
            }else{
                selecionaCD(this.CDSelecionado+1);
            }
        }
    }
    
    /**
     * <p>Método responsável por mover seleção de CD à esquerda.</p>
     */
    public void deslocarSelecaoAEsquerda(){
        
        if (this.CDSelecionado == 0){
            if (this.posicaoPrimeiraImagem != 0){
                this.posicaoPrimeiraImagem = this.posicaoPrimeiraImagem - ConstantesComum.NUMERO_CDS_EXIBIDOS;
                selecionaCD(ConstantesComum.NUMERO_CDS_EXIBIDOS - 1);
                carregaImagemCDs();
            }
        }else{
            selecionaCD(this.CDSelecionado-1);
        }
    }
    
    private void formKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyPressed
       
        if (evt.getKeyCode() == ConstantesComum.DIREITA)
        {
            deslocarSelecaoADireita();
        } 
        else if (evt.getKeyCode() == ConstantesComum.ESQUERDA)
        {
            deslocarSelecaoAEsquerda();
        } 
        else if (evt.getKeyCode() == ConstantesComum.SAIR)
        { 
            System.exit(0);
        } 
        else if (evt.getKeyCode() == ConstantesComum.SELECIONAR_MUSICA)
        {
            ArquivoUC uc = new ArquivoUC();
            uc.teste();
        }
        else if (evt.getKeyCode() == ConstantesComum.CREDITO){
            this.credito++;
            this.lblValorCreditos.setText(this.credito.toString());
        }
        //else {
        //    JOptionPane.showMessageDialog(null, evt.getKeyCode());
        //}
        
    }//GEN-LAST:event_formKeyPressed

    private void lstMusicasKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_lstMusicasKeyPressed
        formKeyPressed(evt);
        if (evt.getKeyCode() == ConstantesComum.SELECIONAR_MUSICA)
        {
            selecionarMusica();
        }
    }//GEN-LAST:event_lstMusicasKeyPressed

    /**
     * 
     */
    private void selecionarMusica() {
        if((this.contadorMusicasSelecionadas == 0 
                || !this.lstMusicasSelecionadas.getModel().getElementAt(this.contadorMusicasSelecionadas -1).toString().equals(this.lstMusicas.getSelectedValue().toString()))
                && this.credito > 0)
        {
            this.mapaMusicasSelecionadas.put(arrayFile[this.posicaoPrimeiraImagem+this.CDSelecionado].getAbsolutePath(), this.lstMusicas.getSelectedValue().toString());
            this.contadorMusicasSelecionadas++;
            this.lblContadorMusicasSelecionadas.setText(this.contadorMusicasSelecionadas.toString());
            this.modelMusicasSelecionadas.addElement(this.lstMusicas.getSelectedValue().toString());
            this.lstMusicasSelecionadas.setModel(this.modelMusicasSelecionadas);
            this.credito--;
            this.lblValorCreditos.setText(this.credito.toString());
        }
    }
    
    /**
     * 
     */
    private void carregaCaminhos(){
        ArquivoDAO dao = ArquivoDAO.getInstance();
        this.arrayFile = dao.getHomeFile().listFiles();
        Arrays.sort(arrayFile, NameFileComparator.NAME_COMPARATOR);
    }
    
    /**
     * <p>Carrega as imagens iniciais na tela de acordo com 
     * os CDs existentes</p>
     */
    private void carregaImagemCDs(){
        
        if (this.posicaoPrimeiraImagem + this.CDSelecionado < arrayFile.length)
        {
            StringBuilder caminhoImagem = new StringBuilder();
            ImageIcon imagemCD = null;
            
            caminhoImagem.append(arrayFile[this.posicaoPrimeiraImagem+this.CDSelecionado].getAbsolutePath());
            caminhoImagem.append("/");
            caminhoImagem.append(ConstantesComum.CAPA_PEQUENA);
            caminhoImagem.append(".");
            
            for (int contadorI=0; contadorI< ConstantesComum.NUMERO_CDS_EXIBIDOS; contadorI++)
            {
                boolean posicaoValida = this.posicaoPrimeiraImagem + contadorI < this.arrayFile.length;

                if (posicaoValida)
                {
                    int numeroPosicao = this.posicaoPrimeiraImagem + contadorI;
                    if (arrayFile[numeroPosicao].isDirectory())
                    {
                        for(int contadorK=0; contadorK<ConstantesComum.TIPOS_IMG.length;contadorK++)
                        {
                            if (new File(arrayFile[numeroPosicao].getAbsolutePath()+"/"+ConstantesComum.CAPA_PEQUENA+"."+ConstantesComum.TIPOS_IMG[contadorK]).exists())
                            {
                                imagemCD = new ImageIcon(this.arrayFile[numeroPosicao].getAbsolutePath()+"/"+ConstantesComum.CAPA_PEQUENA+"."+ConstantesComum.TIPOS_IMG[contadorK]);
                                break;
                            }
                        }

                        if (imagemCD != null){
                            imagemCD.setImage(imagemCD.getImage().getScaledInstance(this.lblImagemCDUm.getWidth(), this.lblImagemCDUm.getHeight(), 100));
                            this.listaLBLs.get(contadorI).setIcon(imagemCD);
                        }
                    }
                }else{
                    this.listaLBLs.get(contadorI).setIcon(null);
                }
            }
        }
    }
    
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /*
         * Set the Nimbus look and feel
         */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /*
         * Create and display the form
         */
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Principal().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    private javax.swing.JLabel lblCDSelecionado;
    private javax.swing.JLabel lblContadorMusicasSelecionadas;
    private javax.swing.JLabel lblCreditos;
    private javax.swing.JLabel lblImagemCDCinco;
    private javax.swing.JLabel lblImagemCDDois;
    private javax.swing.JLabel lblImagemCDOito;
    private javax.swing.JLabel lblImagemCDQuatro;
    private javax.swing.JLabel lblImagemCDSeis;
    private javax.swing.JLabel lblImagemCDSete;
    private javax.swing.JLabel lblImagemCDTres;
    private javax.swing.JLabel lblImagemCDUm;
    private javax.swing.JLabel lblMusicasSelecionadas;
    private javax.swing.JLabel lblNomeCD;
    private javax.swing.JLabel lblValorCreditos;
    private javax.swing.JList lstMusicas;
    private javax.swing.JList lstMusicasSelecionadas;
    private javax.swing.JPanel pnlCDCinco;
    private javax.swing.JPanel pnlCDDois;
    private javax.swing.JPanel pnlCDOito;
    private javax.swing.JPanel pnlCDQuatro;
    private javax.swing.JPanel pnlCDSeis;
    private javax.swing.JPanel pnlCDSelecionado;
    private javax.swing.JPanel pnlCDSete;
    private javax.swing.JPanel pnlCDTres;
    private javax.swing.JPanel pnlCDUm;
    private javax.swing.JScrollPane scrlPnlLstMusicas;
    private javax.swing.JScrollPane scrlPnlLstMusicasSelecionadas;
    // End of variables declaration//GEN-END:variables

}
